package exercise;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * 扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录）
 * 并且后续询问用户是否要删除该文件
 */
public class Test1 {
    public static void main(String[] args) throws IOException {
        // 1. 先输入要扫描的目录, 以及要删除的文件名
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要扫描的路径:");
        String rootDir = scanner.nextLine();
        System.out.println("请输入要删除的文件名:");
        String toDeleteDir = scanner.nextLine();
        //判断路径是否正确
        File rootFile = new File(rootDir);
        if (!rootFile.isDirectory()){
            System.out.println("路径输入错误");
            return;
        }
        // 2. 遍历目录, 把指定目录 中的所有文件和子目录都遍历一遍, 从而找到要删除的文件
        scanDir(rootFile, toDeleteDir);
    }

    private static void scanDir(File rootFile, String toDeleteDir) throws IOException {
        File[] files = rootFile.listFiles();
        //判断目录是否为空
        if (files == null){
            return;
        }
        for (File f : files) {
            //先判断是否是文件
            if (f.isFile()){
                //包含文件名就删除, 不包含继续递归
                if (f.getName().contains(toDeleteDir)){
                    deleteDir(f);
                }
            }else if (f.isDirectory()){//如果是目录就递归
                scanDir(f, toDeleteDir);
            }
        }
    }

    private static void deleteDir(File f) throws IOException {
        System.out.println(f.getCanonicalPath() + " 确认要删除吗? (Y/n)");
        Scanner scanner = new Scanner(System.in);
        String choice = scanner.next();
        if (choice.equals("Y") || choice.equals("y")) {
            f.delete();
            System.out.println("文件删除成功!");
        } else {
            System.out.println("文件取消删除!");
        }
    }
}
